﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SmartDeviceClient.Interfaz
{
    public partial class FormLogin : Form
    {
        private Color ColorSemaforo;

        public FormLogin()
        {
            InitializeComponent();
            this.pictureBox1.Image = new Bitmap(Program.GetAppPath() + @"Recursos\Bienvenido.png");
            ColorSemaforo = Color.Green;
            if (!CompruebaConexion())
            {
                MessageBox.Show("El servidor no esta disponible. Se intentara conectar automaticamente.");
                this.menuItem1.Enabled = false;
                this.linkLabelNuevoRegistro.Enabled = false;
                ColorSemaforo = Color.Red;
                return;
            }
        }




        //###############################################################################
        //##########                          MÉTODOS                          ##########
        //###############################################################################

        /// <summary>
        /// Comprueba si el servidor esta activo.
        /// </summary>
        /// <returns></returns>
        private bool CompruebaConexion()
        {
            try
            {
                Program.proxy.TestConexion();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.FillEllipse(new SolidBrush(ColorSemaforo), 5, 250, 10, 10);
        }

        

        //###############################################################################
        //##########                          EVENTOS                          ##########
        //###############################################################################

        private void timerReconectar_Tick(object sender, EventArgs e)
        {
            if (CompruebaConexion())
            {
                if (ColorSemaforo == Color.Red)
                {

                    this.menuItem1.Enabled = true;
                    this.linkLabelNuevoRegistro.Enabled = true;
                    ColorSemaforo = Color.Green;
                    this.Refresh();
                }
            }
            else if(!CompruebaConexion()) 
            {
                if (ColorSemaforo == Color.Green)
                {
                    this.menuItem1.Enabled = false;
                    this.linkLabelNuevoRegistro.Enabled = false;
                    ColorSemaforo = Color.Red;
                    this.Refresh();
                }
            }
        }

        private void linkLabelNuevoRegistro_Click(object sender, EventArgs e)
        {
            FormRegistro formularioRegistro = new FormRegistro();
            formularioRegistro.Show();
            this.Hide();
        }

        private void menuItem1_Click(object sender, EventArgs e)
        {
            if(textBoxUsuario.Text==String.Empty || textBoxPass.Text==String.Empty)
            {
                MessageBox.Show("No puede haber campos vacios");
                return;
            }
            try
            {
                if (!Program.proxy.LoginUsuario(textBoxUsuario.Text, textBoxPass.Text))
                {
                    MessageBox.Show("Usuario no registrado");
                    textBoxUsuario.Text = "";
                    textBoxPass.Text = "";
                    textBoxUsuario.Focus();
                    return;
                }
            }catch(Exception)
            {
                MessageBox.Show("Se perdió la conexión con el servidor.");
                return;
            }
            FormOrigenDestino formularioorigenDestino = new FormOrigenDestino();
            formularioorigenDestino.Show();
            this.Hide();
        }

        private void FormLogin_Closing(object sender, CancelEventArgs e)
        {
            Application.Exit();
        }

        private void menuItem2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void textBoxUsuario_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter && ColorSemaforo==Color.Green)
            {
                menuItem1_Click(null, null);
            }
        }

        private void textBoxPass_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                menuItem1_Click(null, null);
            }
        }


    }
}